{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "KNN",
      "provenance": [],
      "collapsed_sections": [],
      "authorship_tag": "ABX9TyMbSU2AM7/XB21mizSPENGb",
      "include_colab_link": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/Divyanshu-ISM/Oil-and-Gas-data-analysis/blob/master/KNN.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "WxRuE-aUJbMt",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import numpy as np\n",
        "import pandas as pd\n",
        "import seaborn as sns\n",
        "import matplotlib.pyplot as plt\n",
        "%matplotlib inline"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "mvp3iV_oPQyD",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "df = pd.read_csv('Classified Data',index_col=0)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "XmZoBKWfPclZ",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 195
        },
        "outputId": "360a7d2f-bcbc-496a-e5b0-a196ff0ae017"
      },
      "source": [
        "df.head()"
      ],
      "execution_count": 8,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>WTT</th>\n",
              "      <th>PTI</th>\n",
              "      <th>EQW</th>\n",
              "      <th>SBI</th>\n",
              "      <th>LQE</th>\n",
              "      <th>QWG</th>\n",
              "      <th>FDJ</th>\n",
              "      <th>PJF</th>\n",
              "      <th>HQE</th>\n",
              "      <th>NXJ</th>\n",
              "      <th>TARGET CLASS</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>0.913917</td>\n",
              "      <td>1.162073</td>\n",
              "      <td>0.567946</td>\n",
              "      <td>0.755464</td>\n",
              "      <td>0.780862</td>\n",
              "      <td>0.352608</td>\n",
              "      <td>0.759697</td>\n",
              "      <td>0.643798</td>\n",
              "      <td>0.879422</td>\n",
              "      <td>1.231409</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>0.635632</td>\n",
              "      <td>1.003722</td>\n",
              "      <td>0.535342</td>\n",
              "      <td>0.825645</td>\n",
              "      <td>0.924109</td>\n",
              "      <td>0.648450</td>\n",
              "      <td>0.675334</td>\n",
              "      <td>1.013546</td>\n",
              "      <td>0.621552</td>\n",
              "      <td>1.492702</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>0.721360</td>\n",
              "      <td>1.201493</td>\n",
              "      <td>0.921990</td>\n",
              "      <td>0.855595</td>\n",
              "      <td>1.526629</td>\n",
              "      <td>0.720781</td>\n",
              "      <td>1.626351</td>\n",
              "      <td>1.154483</td>\n",
              "      <td>0.957877</td>\n",
              "      <td>1.285597</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>1.234204</td>\n",
              "      <td>1.386726</td>\n",
              "      <td>0.653046</td>\n",
              "      <td>0.825624</td>\n",
              "      <td>1.142504</td>\n",
              "      <td>0.875128</td>\n",
              "      <td>1.409708</td>\n",
              "      <td>1.380003</td>\n",
              "      <td>1.522692</td>\n",
              "      <td>1.153093</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>1.279491</td>\n",
              "      <td>0.949750</td>\n",
              "      <td>0.627280</td>\n",
              "      <td>0.668976</td>\n",
              "      <td>1.232537</td>\n",
              "      <td>0.703727</td>\n",
              "      <td>1.115596</td>\n",
              "      <td>0.646691</td>\n",
              "      <td>1.463812</td>\n",
              "      <td>1.419167</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "        WTT       PTI       EQW  ...       HQE       NXJ  TARGET CLASS\n",
              "0  0.913917  1.162073  0.567946  ...  0.879422  1.231409             1\n",
              "1  0.635632  1.003722  0.535342  ...  0.621552  1.492702             0\n",
              "2  0.721360  1.201493  0.921990  ...  0.957877  1.285597             0\n",
              "3  1.234204  1.386726  0.653046  ...  1.522692  1.153093             1\n",
              "4  1.279491  0.949750  0.627280  ...  1.463812  1.419167             1\n",
              "\n",
              "[5 rows x 11 columns]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 8
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "QDQRO7D4Pd6G",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "# scale matters a lot for KNN algorithm since nearness is important for classification"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "IoB7EFT4PrXF",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "from sklearn.preprocessing import StandardScaler"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "4VIDYzclQO5n",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "scaler = StandardScaler()"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "7i6WNtDmQUyG",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        },
        "outputId": "747676e9-3135-4ee5-8f59-39e3a20f477c"
      },
      "source": [
        "# fit on data without the target class\n",
        "scaler.fit(df.drop('TARGET CLASS',axis=1))"
      ],
      "execution_count": 16,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "StandardScaler(copy=True, with_mean=True, with_std=True)"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 16
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ag4OFlbwQ05J",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "scaled_features = scaler.transform(df.drop('TARGET CLASS',axis=1))"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "A5JYQg4eRR2L",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 235
        },
        "outputId": "d153c7d8-7abd-4a62-82b6-e7948a8dabfe"
      },
      "source": [
        "scaled_features #these are the scaled version of above data."
      ],
      "execution_count": 20,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "array([[-0.12354188,  0.18590747, -0.91343069, ..., -1.48236813,\n",
              "        -0.9497194 , -0.64331425],\n",
              "       [-1.08483602, -0.43034845, -1.02531333, ..., -0.20224031,\n",
              "        -1.82805088,  0.63675862],\n",
              "       [-0.78870217,  0.33931821,  0.30151137, ...,  0.28570652,\n",
              "        -0.68249379, -0.37784986],\n",
              "       ...,\n",
              "       [ 0.64177714, -0.51308341, -0.17920486, ..., -2.36249443,\n",
              "        -0.81426092,  0.11159651],\n",
              "       [ 0.46707241, -0.98278576, -1.46519359, ..., -0.03677699,\n",
              "         0.40602453, -0.85567   ],\n",
              "       [-0.38765353, -0.59589427, -1.4313981 , ..., -0.56778932,\n",
              "         0.3369971 ,  0.01034996]])"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 20
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "0x7uQQ2DRrIz",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "df_feat = pd.DataFrame(scaled_features,columns=df.columns[:-1])"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "s5hRp-9nSD97",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 195
        },
        "outputId": "03e36e91-fef6-4203-cf8b-32bab361158c"
      },
      "source": [
        "df_feat.head()"
      ],
      "execution_count": 22,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>WTT</th>\n",
              "      <th>PTI</th>\n",
              "      <th>EQW</th>\n",
              "      <th>SBI</th>\n",
              "      <th>LQE</th>\n",
              "      <th>QWG</th>\n",
              "      <th>FDJ</th>\n",
              "      <th>PJF</th>\n",
              "      <th>HQE</th>\n",
              "      <th>NXJ</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>-0.123542</td>\n",
              "      <td>0.185907</td>\n",
              "      <td>-0.913431</td>\n",
              "      <td>0.319629</td>\n",
              "      <td>-1.033637</td>\n",
              "      <td>-2.308375</td>\n",
              "      <td>-0.798951</td>\n",
              "      <td>-1.482368</td>\n",
              "      <td>-0.949719</td>\n",
              "      <td>-0.643314</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>-1.084836</td>\n",
              "      <td>-0.430348</td>\n",
              "      <td>-1.025313</td>\n",
              "      <td>0.625388</td>\n",
              "      <td>-0.444847</td>\n",
              "      <td>-1.152706</td>\n",
              "      <td>-1.129797</td>\n",
              "      <td>-0.202240</td>\n",
              "      <td>-1.828051</td>\n",
              "      <td>0.636759</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>-0.788702</td>\n",
              "      <td>0.339318</td>\n",
              "      <td>0.301511</td>\n",
              "      <td>0.755873</td>\n",
              "      <td>2.031693</td>\n",
              "      <td>-0.870156</td>\n",
              "      <td>2.599818</td>\n",
              "      <td>0.285707</td>\n",
              "      <td>-0.682494</td>\n",
              "      <td>-0.377850</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>0.982841</td>\n",
              "      <td>1.060193</td>\n",
              "      <td>-0.621399</td>\n",
              "      <td>0.625299</td>\n",
              "      <td>0.452820</td>\n",
              "      <td>-0.267220</td>\n",
              "      <td>1.750208</td>\n",
              "      <td>1.066491</td>\n",
              "      <td>1.241325</td>\n",
              "      <td>-1.026987</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>1.139275</td>\n",
              "      <td>-0.640392</td>\n",
              "      <td>-0.709819</td>\n",
              "      <td>-0.057175</td>\n",
              "      <td>0.822886</td>\n",
              "      <td>-0.936773</td>\n",
              "      <td>0.596782</td>\n",
              "      <td>-1.472352</td>\n",
              "      <td>1.040772</td>\n",
              "      <td>0.276510</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "        WTT       PTI       EQW  ...       PJF       HQE       NXJ\n",
              "0 -0.123542  0.185907 -0.913431  ... -1.482368 -0.949719 -0.643314\n",
              "1 -1.084836 -0.430348 -1.025313  ... -0.202240 -1.828051  0.636759\n",
              "2 -0.788702  0.339318  0.301511  ...  0.285707 -0.682494 -0.377850\n",
              "3  0.982841  1.060193 -0.621399  ...  1.066491  1.241325 -1.026987\n",
              "4  1.139275 -0.640392 -0.709819  ... -1.472352  1.040772  0.276510\n",
              "\n",
              "[5 rows x 10 columns]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 22
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "C7DyLGyjSIRX",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "from sklearn.model_selection import train_test_split"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "9fKndp5GSUog",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "X = df_feat\n",
        "y = df['TARGET CLASS']\n",
        "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=101)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "c-sVDyumSf56",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "from sklearn.neighbors import KNeighborsClassifier"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "eSqmjP41S-rv",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "knn  = KNeighborsClassifier(n_neighbors=1)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "KrRE9rKJTTpa",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 67
        },
        "outputId": "db8e2f6e-c074-45f2-b572-af86becb8b82"
      },
      "source": [
        "knn.fit(X_train,y_train)"
      ],
      "execution_count": 28,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
              "                     metric_params=None, n_jobs=None, n_neighbors=1, p=2,\n",
              "                     weights='uniform')"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 28
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "H2kkD64mTZCl",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "y_p = knn.predict(X_test)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "YxZFit1VTdT9",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "from sklearn.metrics import classification_report,confusion_matrix"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Q7T9j8HlTqU7",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 202
        },
        "outputId": "c29441fc-502e-4041-9c8c-755dfc660d35"
      },
      "source": [
        "print(confusion_matrix(y_test,y_p))\n",
        "print(classification_report(y_test,y_p))"
      ],
      "execution_count": 31,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "[[151   8]\n",
            " [ 15 126]]\n",
            "              precision    recall  f1-score   support\n",
            "\n",
            "           0       0.91      0.95      0.93       159\n",
            "           1       0.94      0.89      0.92       141\n",
            "\n",
            "    accuracy                           0.92       300\n",
            "   macro avg       0.92      0.92      0.92       300\n",
            "weighted avg       0.92      0.92      0.92       300\n",
            "\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "TUpq41CuT3nT",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "# ELBOW METHOD to choose the most correct K value"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "T7mi8oDgUBzU",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "error = []\n",
        "\n",
        "for i in range(1,45):\n",
        "  knn = KNeighborsClassifier(n_neighbors=i)\n",
        "  knn.fit(X_train,y_train)\n",
        "  ypi = knn.predict(X_test)\n",
        "  error.append(np.mean(ypi!=y_test))\n"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "wvNKEiUQYI5s",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 530
        },
        "outputId": "f13719df-7d4e-4ec2-86a0-53ed3cb91d38"
      },
      "source": [
        "plt.figure(figsize=(10,8))\n",
        "plt.plot(range(1,45),error)\n",
        "plt.title('Error vs K')\n",
        "plt.xlabel('K')\n",
        "plt.ylabel('ERROR')"
      ],
      "execution_count": 35,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "Text(0, 0.5, 'ERROR')"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 35
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 720x576 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "HL3dj5fqYf0t",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "# ERROR is minimum at K = 17\n",
        "# SOme may also pick k = 40"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "u0qnSV5YYwBb",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 202
        },
        "outputId": "f6da6a4c-6992-447d-841b-b9d81d520312"
      },
      "source": [
        "knn  = KNeighborsClassifier(n_neighbors=40)\n",
        "knn.fit(X_train,y_train)\n",
        "y_p = knn.predict(X_test)\n",
        "print(confusion_matrix(y_test,y_p))\n",
        "print(classification_report(y_test,y_p))"
      ],
      "execution_count": 38,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "[[154   5]\n",
            " [  7 134]]\n",
            "              precision    recall  f1-score   support\n",
            "\n",
            "           0       0.96      0.97      0.96       159\n",
            "           1       0.96      0.95      0.96       141\n",
            "\n",
            "    accuracy                           0.96       300\n",
            "   macro avg       0.96      0.96      0.96       300\n",
            "weighted avg       0.96      0.96      0.96       300\n",
            "\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "cOJ3sbZZZJBj",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "#----> 0.91 ---->0.96 precision! wow/."
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "fLatLnU3ZXoE",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": 0,
      "outputs": []
    }
  ]
}